package com.lt73.ext.entity;

import com.tangzc.mpe.actable.annotation.ColumnComment;
import com.tangzc.mpe.actable.annotation.Table;
import com.tangzc.mpe.bind.metadata.annotation.BindEntity;
import com.tangzc.mpe.bind.metadata.annotation.BindField;
import com.tangzc.mpe.bind.metadata.annotation.JoinCondition;
import lombok.Data;

import java.util.List;

/**
 * @Author: hanxiao
 * @Date: 2022/4/15 12:55
 */
@Data
@Table(comment = "用户信息")
public class User2 {

    @ColumnComment("主键")
    private String id;

    @ColumnComment("用户名")
    private String username;

    @ColumnComment("密码")
    private String password;

    // 关联身份证完整信息
    // 其中‘conditions’的赋值，表示当前对象(User)的id属性与关联对象(IdentityCard)的userId属性相同
    // 即，如果当前User对象的id为1的话，那么IdentityCard数据中某条userId为1的数据会被关联过来
    @BindEntity(conditions = @JoinCondition(selfField = "id", joinField = "userId"))
    private IdentityCard idCard;

    // 同理只关联身份证号码，@BindField比@BindEntity多了entity、field字段。
    // 因为无法从属性的类型上直接获取实体，需要指明哪个实体的哪个字段。
    @BindField(entity = IdentityCard.class,
            field = "identityNumber",
            conditions = @JoinCondition(selfField = "id", joinField = "userId"))
    private String idCardNumber;


    // 关联该用户发布的所有文章
    @BindEntity(conditions = @JoinCondition(selfField = "id", joinField = "publishedUserId"))
    private List<Article> articles;
}